package com.springmvc.exception;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;

@Component // 定义成 Bean
@Aspect //定义为切面
public class ErrorAspect {

    //定义拦截规则:拦截规则拦截到controller
    @Around(value = "execution(* com.springmvc.controller.*.*(..))")
    public void around(ProceedingJoinPoint joinPoint){

        try {
            joinPoint.proceed();//这里就是执行我们的方法
        } catch (Throwable e) {
            System.out.println("记录异常:"+e);
            //我们以后不可能直接拦截 controller
            //一般都是拦截业务层 做事务回滚
            throw new RuntimeException(e);//记录的异常信息需要抛出 抛出给处理方
        }

    }

}
